/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sys.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import sys.bean.CidadeBean;
import sys.bean.EstadoBean;
import sys.bean.MotoristaBean;
import sys.utils.ConexaoMySql;

/**
 *
 * @author Administrador
 */
public class MotoristaDao {

    public void alterar(MotoristaBean motorista) throws SQLException {

        Connection con = ConexaoMySql.getConection();

        String sql = "UPDATE motorista \n"
                + "SET cidade_id=?, nome=?, sobre_nome=?, rg=?, cpf=?, obs=? \n"
                + "WHERE  id_motorista=?;";

        PreparedStatement stmt = con.prepareStatement(sql);

        stmt.setInt(1, motorista.getCidade().getIdCidage());
        stmt.setString(2, motorista.getNome());
        stmt.setString(3, motorista.getSobreNome());
        stmt.setString(4, motorista.getRg());
        stmt.setString(5, motorista.getCpf());
        stmt.setString(6, motorista.getObs());
        stmt.setInt(7, motorista.getIdMotorista());

        stmt.execute();
        con.close();
        stmt.close();

    }

    public void incluir(MotoristaBean motorista) throws SQLException {

        Connection con = ConexaoMySql.getConection();
        String sql = "INSERT INTO motorista \n"
                + "(cidade_id, nome, sobre_nome, rg, cpf, obs) \n"
                + "VALUES \n"
                + "(?, ?, ?, ?, ?, ?);";
        PreparedStatement stmt = con.prepareStatement(sql);

        stmt.setInt(1, motorista.getCidade().getIdCidage());
        stmt.setString(2, motorista.getNome());
        stmt.setString(3, motorista.getSobreNome());
        stmt.setString(4, motorista.getRg());
        stmt.setString(5, motorista.getCpf());
        stmt.setString(6, motorista.getObs());

        stmt.execute();

        stmt.close();
        con.close();

    }

    public MotoristaBean consultaMotorista(int idMotorista) throws SQLException {

        Connection con = ConexaoMySql.getConection();

        String sql = "SELECT m.id_motorista, UPPER(c.nome) AS nome_cidade , UPPER(et.nome) AS nome_estado, et.uf, m.nome, m.sobre_nome, m.rg, m.cpf, m.obs \n"
                + "FROM motorista m \n"
                + "INNER JOIN cidade c ON (c.id = m.cidade_id) \n"
                + "INNER JOIN estado et ON (et.id = c.estado_id) \n"
                + "WHERE m.id_motorista = " + idMotorista;

        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();

        MotoristaBean mororista = new MotoristaBean();
        CidadeBean cidade = new CidadeBean();
        EstadoBean estado = new EstadoBean();

        while (rs.next()) {

            mororista.setIdMotorista(rs.getInt("id_motorista"));
            estado.setNome(rs.getString("nome_estado"));
            estado.setUf(rs.getString("uf"));
            cidade.setEstado(estado);
            cidade.setNome(rs.getString("nome_cidade"));

            mororista.setCidade(cidade);
            mororista.setNome(rs.getString("nome"));
            mororista.setSobreNome(rs.getString("sobre_nome"));
            mororista.setRg(rs.getString("rg"));
            mororista.setCpf(rs.getString("cpf"));
            mororista.setObs(rs.getString("obs"));

        }

        stmt.close();
        con.close();

        return mororista;
    }

    public List<MotoristaBean> listaMotoristas(String desc) throws SQLException {
        List<MotoristaBean> listVeiculos = new ArrayList<>();
        Connection con = ConexaoMySql.getConection();

        String sql = "SELECT m.id_motorista, m.nome, m.sobre_nome, m.cpf \n"
                + "FROM motorista m \n"
                + "WHERE m.nome LIKE '%" + desc + "%'";

        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();

        while (rs.next()) {
            MotoristaBean motorista = new MotoristaBean();

            motorista.setIdMotorista(rs.getInt("id_motorista"));
            motorista.setNome(rs.getString("nome"));
            motorista.setSobreNome(rs.getString("sobre_nome"));
            motorista.setCpf(rs.getString("cpf"));

            listVeiculos.add(motorista);
        }

        stmt.close();
        con.close();

        return listVeiculos;
    }

}
